package com.dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import com.beans.Entrees;
import com.beans.Sorties;
import com.utils.HibernateUtils;

public class EntreesDao {

	public EntreesDao() {
		super();

	}

	// méthode permettant d'ajouter une entree
	public void addEntrees(Entrees entrees) {

		Session session = HibernateUtils.currentSession();

		Transaction tx = session.beginTransaction();

		session.save(entrees);

		tx.commit();
		HibernateUtils.closeSession();

	}

	// methode permettant de rechercher une entree en fonction de la réference
	
	public Entrees findEntrees(String refeEntree) {

		Session session = HibernateUtils.currentSession();

		Query query = session.createQuery("from Entrees where entRef='"
				+ refeEntree + "'");
		List<Entrees> listEntrees = query.list();

		HibernateUtils.closeSession();
		return listEntrees.get(0);

	}

	// methode permettant de faire la mise à jour d'une entrée

	public boolean updateEntree(Entrees entrees) {
		boolean updated = false;
		Transaction tx = null;
		try {
			Session session = HibernateUtils.currentSession();// ouverture d'une
			// session

			tx = session.beginTransaction();// on ouvre une transaction

			session.update(entrees);
			updated = true;

		} catch (Exception e) {
			System.out.println("error lors de la modification de l'entree "
					+ e.getLocalizedMessage());
		} finally {
			tx.commit();
			HibernateUtils.closeSession();
		}

		return updated;

	}

	// méthode permettant de supprimer une entrée
	public boolean deleteEntrees(Entrees entrees) {
		boolean deleted = false;
		Transaction tx = null;
		try {
			Session session = HibernateUtils.currentSession();// ouverture d'une
			// session

			tx = session.beginTransaction();// on ouvre une transaction

			session.delete(entrees);
			deleted = true;

		} catch (Exception e) {
			System.out.println("error lors de la suppression de l'entree"
					+ e.getLocalizedMessage());
		} finally {
			tx.commit();
			HibernateUtils.closeSession();
		}

		return deleted;
	}

	// methode permettant de lister l'ensemble des entrées de la base

	public List<Entrees> selectAllEntrees() {

		Session session = HibernateUtils.currentSession();
		Query query = session.createQuery("from Entrees");
		List<Entrees> listEntrees = query.list();
		for (int i = 0; i < listEntrees.size(); i++) {
			Entrees entrees = new Entrees();
			entrees = listEntrees.get(i);

		}
		return listEntrees;
	}

}
